1. Field on the Invention
The invention relates to storage subsystem control methods and structures and more specifically relates to methods and structures for utilizing non-SCSI disk drives in a storage subsystem designed for SCSI interfacing.
2. Discussion of Related Art
High-capacity, high-performance storage subsystems often utilize a plurality of disk drives to achieve redundancy for enhanced reliability and to achieve performance improvements. Reliability is enhanced by creating redundancy information to be stored in the storage subsystem in addition to the user or host supplied data. Further, the user data and redundancy information may be distributed over multiple disk drives so that failure of any single disk drive will not cause loss of data or prevent continued utilization of the storage subsystem. In addition, performance of a storage subsystem may be enhanced by distributing stored data (user and/or redundancy data) over multiple disk drives so that I/O requests may be processed by multiple disk drives in parallel rather than waiting for operations to complete on a single disk drive.
Often, such storage subsystems utilizing multiple disk drives are designed to utilize SCSI interface disk drives. The SCSI interface (small computer system interface) disk drives often provide higher performance as compared to lower-cost, commodity disk drives. High-performance subsystems therefore often utilize such higher performance SCSI disk drives. The SCSI standard is well documented and readily available in printed or electronic form from numerous source. Numerous older and updated versions may be readily located in the worldwide web on the Internet by those of ordinary skill in the art. As used here, “SCSI” refers to any and all present, future and past versions of the SCSI specifications. The problems addressed herein and the solutions provided by the present invention are applicable to systems using disk drives compliant with any and all versions of the SCSI standard specifications.
One common type of storage subsystem is referred to as a RAID storage subsystem (redundant array of independent drives). Such a RAID storage subsystem typically includes one or more storage controllers to provide processing functionality for receiving and processing host system supplied I/O requests and for managing lower-level manipulation of information stored on and retrieved from a plurality of disk drives associated with the subsystem. The storage controller performs required management and processing to effectuate the RAID storage management techniques. In particular, a RAID storage controller manages generation, storage and retrieval of redundancy information and associated host supplied data and also manages the distribution (striping) of data over the multiple disk drives.
In view of the traditional preference for high performance SCSI disk drives, many RAID storage controllers are designed and programmed in a manner optimized for utilization of such high-performance SCSI disk drives. The SCSI interface standards describe command structures and associated data structures useful in interacting with SCSI disk drives and other SCSI devices. SCSI oriented RAID storage controllers therefore are designed to expect and utilize such structures and command interfaces. The control processes (i.e., firmware) operable within typical RAID) controllers designed for SCSI disk drives therefore are typically designed assuming use of standard SCSI commands and status as well as standard data structures used for interacting with such SCSI disk drives (such command data structures are often referred to as command descriptor blocks or simply as CDBs).
Non-SCSI disk drives such as IDE interface disk drives have advanced substantially in performance and remain substantially less expensive than higher performance SCSI disk drives. However, an existing storage controller architecture originally designed for interacting with SCSI disk drives is not easily adapted for utilization of lower-cost non-SCSI disk drives. Adapting an existing SCSI-based storage controller design to utilize non-SCSI lower cost disk drives can require substantial re-work and re-design of the controller. Significant cost, complexity and potential for error may be involved in such a conversion. It is therefore a problem to easily adapt existing storage controller designs intended for SCSI disk drive utilization to enable utilization of lower-cost non-SCSI disk drives.
It is evident from the above discussion that a need exists for methods and associated structure to simplify adaptation of a storage controller for utilization of a variety of disk drives.